home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / plugins / print.jar / com / extensibility / plugin / PluginRegistry.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-11  |  3.7 KB  |  131 lines

  1. package com.extensibility.plugin;
  2.  
  3. import java.io.File;
  4. import java.lang.reflect.Method;
  5. import java.util.Enumeration;
  6. import java.util.Hashtable;
  7. import java.util.Vector;
  8.  
  9. public class PluginRegistry {
  10.    public static final int API_VERSION_1_1 = 65537;
  11.    public static final int API_VERSION_1_2 = 65538;
  12.    private int apiVersion = 0;
  13.    private Hashtable apiListing = new Hashtable();
  14.    private PluginClassLoader loader = new PluginClassLoader();
  15.    private static Class[] methodParams = new Class[]{Class.forName("com.extensibility.plugin.PluginRegistry")};
  16.    private static PluginRegistry globalRegistry = null;
  17.  
  18.    public PluginRegistry() {
  19.       String var1 = System.getProperty("java.specification.version");
  20.       if (var1 == null) {
  21.          this.apiVersion = 65537;
  22.       } else {
  23.          Float var2 = new Float(var1);
  24.          this.apiVersion = (int)(var2 * (float)65536);
  25.       }
  26.  
  27.    }
  28.  
  29.    public static PluginRegistry getRegistry() {
  30.       return globalRegistry;
  31.    }
  32.  
  33.    public static void setRegistry(PluginRegistry var0) {
  34.       globalRegistry = var0;
  35.    }
  36.  
  37.    public void registerPluginsInFolder(File var1) {
  38.       if (var1.isDirectory()) {
  39.          String[] var2 = var1.list(new 1((PluginRegistry)null));
  40.          Vector var3 = this.loadJars(var1, var2);
  41.          this.callMainClasses(var3);
  42.       }
  43.    }
  44.  
  45.    public boolean registerPlugin(String var1, Class var2, String var3, int var4) {
  46.       if (var4 > this.apiVersion) {
  47.          return false;
  48.       } else {
  49.          Object var5 = this.apiListing.get(var1);
  50.          Vector var6;
  51.          if (var5 == null) {
  52.             var6 = new Vector();
  53.             this.apiListing.put(var1, var6);
  54.          } else {
  55.             var6 = (Vector)var5;
  56.          }
  57.  
  58.          var6.addElement(var2);
  59.          return true;
  60.       }
  61.    }
  62.  
  63.    public int getPluginApiCount(String var1) {
  64.       Object var2 = this.apiListing.get(var1);
  65.       int var3 = 0;
  66.       if (var2 != null) {
  67.          Vector var4 = (Vector)var2;
  68.          var3 = var4.size();
  69.       }
  70.  
  71.       return var3;
  72.    }
  73.  
  74.    public Object getNthPlugin(String var1, int var2) {
  75.       Object var3 = this.apiListing.get(var1);
  76.       Object var4 = null;
  77.       if (var3 != null) {
  78.          Vector var5 = (Vector)var3;
  79.          Class var6 = (Class)var5.elementAt(var2);
  80.  
  81.          try {
  82.             if (var6 != null) {
  83.                var4 = var6.newInstance();
  84.             }
  85.          } catch (Exception var8) {
  86.          }
  87.       }
  88.  
  89.       return var4;
  90.    }
  91.  
  92.    protected void callMainClasses(Vector var1) {
  93.       Enumeration var2 = var1.elements();
  94.  
  95.       while(var2.hasMoreElements()) {
  96.          String var3 = (String)var2.nextElement();
  97.  
  98.          try {
  99.             Class var4 = this.loader.loadClass(var3, true);
  100.             Method var5 = var4.getDeclaredMethod("registerPlugin", methodParams);
  101.             Object[] var6 = new Object[]{this};
  102.             var5.invoke((Object)null, var6);
  103.          } catch (Exception var7) {
  104.          }
  105.       }
  106.  
  107.    }
  108.  
  109.    protected Vector loadJars(File var1, String[] var2) {
  110.       Vector var3 = new Vector();
  111.       var3.ensureCapacity(var2.length);
  112.  
  113.       for(int var4 = 0; var4 < var2.length; ++var4) {
  114.          File var5 = new File(var1, var2[var4]);
  115.          String var6 = null;
  116.          if (var5.isFile()) {
  117.             try {
  118.                var6 = this.loader.enumerateClasses(var5);
  119.             } catch (Exception var8) {
  120.             }
  121.          }
  122.  
  123.          if (var6 != null) {
  124.             var3.addElement(var6);
  125.          }
  126.       }
  127.  
  128.       return var3;
  129.    }
  130. }
  131.